/**
 * Package domain
 */
package teamrocket.domain; // $codepro.audit.disable packagePrefixNamingConvention

import java.io.Serializable;

/**
 * Represents an object that the database can interface with.
 * Defines the methods for how these objects interact with the db
 * @author Stephen
 * @version 1.0
 * @param <T>
 */
public interface IDBObject<T> extends Serializable {
	/**
	 * Creates this object in the database
	 * @return IDBObject<T>
	 */
	IDBObject<T> create();
	
	/**
	 * Updates this object in the database according to its id
	 */
	void update();
	
	/**
	 * Deletes this object from the db according to its id
	 */
	void destroy();

}
